#define _GNU_SOURCE     //在源文件开头定义_GNU_SOURCE宏
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <time.h>
#include <stdbool.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <signal.h>
#include <termios.h> 
#include <sys/types.h>   
#include <sys/time.h>   
#include <sys/stat.h>   
#include <fcntl.h>      
#include <errno.h>   
#include <stdlib.h>   
#include <string.h>   
#include <sys/ipc.h>
#include <sys/shm.h>
#include <linux/joystick.h>   
//#include <linux/list.h> /*郁闷，不能直接使用linux自带的list链表，需要单独提取出来，见前面的code*/    
#include "../include/report.h"   

#if 1   
#define LOG_DBG(fmt, ...)  fprintf(stdout, fmt, ##__VA_ARGS__)   
#else   
#define LOG_DBG(fmt, ...)   
#endif   
  
#define LOG_ERR(fmt, ...)  fprintf(stderr, fmt, ##__VA_ARGS__)   

int main(int argc, char* argv[])  
{  
    sleep(8);
    system("echo 'connect 84:26:7A:42:85:4B' | bluetoothctl");
    //Report_Exc *report_exec;
     key_t  report_key;                                        
    int shm_id_report;                                      
    uint8_t *report_buf;                                         
    //获取key                                      
    if((report_key = ftok("/home/linjunhan/dolphin/report",0xe)) < 0)                    
         perror("ftok");                                                                 
     //创建或获取共享内存                               
    if((shm_id_report = shmget(report_key,SHMSIZE,IPC_CREAT|0666)) < 0)
         perror("shmget");                                                                                                 
     //映射共享内存到进程的虚拟空间                        
    if((report_buf = shmat(shm_id_report,NULL,0)) ==(void*)-1)                   
         perror("shmat");                   
    while(1){
        if( ((Report_Exc *)report_buf)->elec == 1){
            system("sudo espeak -v zh+f2  '电量不足，请及时充电' -s 220");
        } 
        sleep(5);
        if( ((Report_Exc *)report_buf)->leak == 1){
            system("sudo espeak -v zh+f2  '漏水啦，漏水啦' -s 220");
        } 
        sleep(5);
    }
}
